package br.com.app.ligasoccer.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import br.com.app.ligasoccer.DatabaseHelper;
import br.com.app.ligasoccer.domain.Jogador;

public class JogadorDAO {

	private DatabaseHelper helper;
	private SQLiteDatabase db;
	
	public JogadorDAO(Context context) {
		this.helper = new DatabaseHelper(context);
	}
	
	public SQLiteDatabase getDb() {
		if (this.db == null) {
			this.db = this.helper.getWritableDatabase();
		}
		return this.db;
	}
	
	public List<Jogador> listarJogadores(String idLiga) {
		Cursor cursor = this.getDb().rawQuery("select * from jogador where liga_id = ?", new String[]{idLiga});
		List<Jogador> lista = new ArrayList<Jogador>();
		if (cursor.moveToFirst()) {
			do {
				lista.add(new Jogador(cursor.getInt(0), cursor.getString(1), cursor.getInt(2)));
			} while (cursor.moveToNext());
		}
		return lista;
	}
	
	public boolean salvarJogador(Jogador jogador) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHelper.Jogador.NOME, jogador.getNome());
		values.put(DatabaseHelper.Jogador.LIGA_ID, jogador.getIdLiga());
		
		long resultado = this.getDb().insert(DatabaseHelper.Jogador.TABELA, null, values);
		return resultado != -1 ? true : false;
	}
	
	public boolean atualizarJogador(Jogador jogador) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHelper.Jogador.NOME, jogador.getNome());
		values.put(DatabaseHelper.Jogador.LIGA_ID, jogador.getIdLiga());
		long resultado = this.getDb().update(DatabaseHelper.Jogador.TABELA, values, "_id = ?", new String[]{String.valueOf(jogador.getId())});
		return resultado != 0 ? true : false;
	}
	
	public Jogador carregarPorNomeELiga(String nome, String idLiga) {
		Cursor cursor = this.getDb().query(DatabaseHelper.Jogador.TABELA, DatabaseHelper.Jogador.COLUNAS, "nome = ? and liga_id = ?", new String[]{nome, idLiga}, null, null, null);
		Jogador jogador = null;
		if (cursor.moveToFirst()) {
			jogador = new Jogador(cursor.getInt(0), cursor.getString(1), cursor.getInt(2));
		}
		return jogador;
	}
	
	public boolean excluirJogador(String id) {
		long resultado = this.getDb().delete(DatabaseHelper.Jogador.TABELA, "_id = ?", new String[]{id});
		return resultado != 0 ? true : false;
	}
	
	public Jogador carregarPorId(String id) {
		Cursor cursor = this.getDb().query(DatabaseHelper.Jogador.TABELA, DatabaseHelper.Jogador.COLUNAS, "_id = ?", new String[]{id}, null, null, null);
		Jogador jogador = null;
		if (cursor.moveToFirst()) {
			jogador = new Jogador(cursor.getInt(0), cursor.getString(1), cursor.getInt(2));
		}
		return jogador;
	}
}
